Бінарне дерево пошуку

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2007
Тип роботи:
Звіт
Предмет:
Структура даних
Група:
КІ-14

Частина тексту файла

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт до лабораторної роботи № 5 з програмування на тему Структура даних „Бінарне дерево пошуку” Мета роботи: Навчитись працювати з структурою даних “Бінарне дерево пошуку ”. Постановка задачі: Побудувати бінарне дерево пошуку для послідовності чисел, що вводяться з клавіатури. Виконати обхід дерева у заданому порядку і підрахувати: кількість вершин дерева, що обраховується при проходженні дерева у прямому порядку; кількість листків дерева, що обраховується при проходженні дерева у зворотньому порядку; кількість вузлів, які мають тільки одного нащадка, що обраховується при проходженні дерева у симетричному порядку. Вилучити з дерева всi листки. Текст програми: #include <stdio.h> #include <stdlib.h> #include <conio.h> #define infotype int #define printfspec "%d " int t=0; struct node { infotype data; struct node *leftson, *rightson; }; typedef struct node *binary_tree; binary_tree del_node0; void Init(binary_tree *root_ptr); int Empty(binary_tree root); binary_tree WhoLeft(binary_tree tree_node); binary_tree WhoRight(binary_tree tree_node); void PutLeft(binary_tree root, infotype new_data); void PutRight(binary_tree root, infotype new_data); binary_tree Find(binary_tree root, infotype search_data); void GoStraight(binary_tree root); void GoSymmetric(binary_tree root); void GoReverse(binary_tree root); void GoStraight11(binary_tree root); binary_tree WhoFather(binary_tree root, binary_tree knot); binary_tree WhoBrother(binary_tree root, binary_tree knot); void AddSearchTree(binary_tree *root_ptr, infotype new_data); void DeleteSearchTree(binary_tree *root_ptr, infotype del_data); void PrintLevel(binary_tree root, int k, int i); void PrintTurningTree(binary_tree root, int h); void main() { binary_tree t1; infotype x; int i=0; Init(&t1); do { printf("Enter element of binary tree (0- break inputing elements: "); scanf("%d",&x); if(x) AddSearchTree(&t1, x); } while(x); printf("\n"); printf("\n"); printf("GoStraight\n"); GoStraight(t1);t--; printf("\nKilkict vershyn %d",t); t=0; printf("\n"); printf("GoSymmetric\n"); GoSymmetric(t1); printf("\nKilkict vuzliv jaki maiuti 1 nashchadka %d",t); t=0; printf("\n"); printf("GoReverse\n"); GoReverse(t1); printf("\nKilkict lystkiv %d",t); t=0; printf("\n"); printf("Tree built:\n"); PrintLevel(t1,20,1); printf("\n"); printf("Tree built:\n"); printf("\n"); PrintTurningTree(t1,5); printf("\n"); printf(" derevo z vydalenymy lystkamy\n"); GoStraight11(t1); //vydalenja lystkiv printf("Tree built:\n"); PrintLevel(t1,20,1); printf("\n"); printf("Tree built:\n"); printf("\n"); PrintTurningTree(t1,5); printf("\n"); getch(); return; } // Реалізація інтерфейсу обробки бінарного дерева (БД) пошуку // Ініціалізація БД void Init(binary_tree *root_ptr) { *root_ptr = NULL; } // Перевірка чи БД порожнє int Empty(binary_tree root) { return root == NULL; } // Пошук лівого сина заданого вузла БД binary_tree WhoLeft(binary_tree tree_node) { if (tree_node) return tree_node->leftson; else return tree_node; } // Пошук правого сина заданого вузла БД binary_tree WhoRight(binary_tree tree_node) { if (tree_node) return tree_node->rightson; else return tree_node; } // Створення нового вузла БД із заданим значенням binary_tree MakeNode(infotype new_data) { binary_tree new_node; new_node = malloc(sizeof(struct node)); new_node->data = new_data; new_node->leftson = new_node->rightson = NULL; return new_node; } // Створення лівого сина заданого вузла БД void PutLeft(binary_tree tree_node, infotype new_data) { binary_tree new_node; new_node = MakeNode(new_data); tree_node->leftson = new_node; } // Створення правого сина заданого вузла БД void PutRight(binary_tree tree_node, infotype new_data...
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини